home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NOVA - For the NeXT Workstation
/
NOVA - For the NeXT Workstation.iso
/
SourceCode
/
OOP_Course
/
Examples
/
DrawTests
/
UserPath
/
UPView.m
< prev
next >
Wrap
Text File
|
1992-12-19
|
2KB
|
81 lines
/* Generated by Interface Builder */
#import "UPView.h"
@implementation UPView
- initFrame:(const NXRect *)theFrame
{
[super initFrame:theFrame];
sqSide=100.; // and length of a side
NXSetRect(&sqRect,bounds.size.width/2.0,bounds.size.height/2.0,3*sqSide,sqSide);
backgroundGray=NX_WHITE; // init the background gray level
userPath = newUserPath(); // create a user path
return self;
}
- (float)backgroundGray
{
return backgroundGray;
}
- takeBackgroundGrayFrom:sender
{
backgroundGray = [sender floatValue]; // read the background gray slider
[self display];
return self;
}
- drawSelf:(const NXRect *)r :(int)c
{
int i, length = sqSide/8;
/* Draw background */
PSsetgray(backgroundGray);
NXRectFill(&bounds);
/* Start Drawing */
PSsetgray(NX_BLACK);
PSsetlinewidth(5.0);
beginUserPath(userPath, YES); // start generating a stroke path with cache (boolean)
UPmoveto(userPath, sqRect.origin.x, sqRect.origin.y);
for(i = 0; i<12; i++){
UPrlineto(userPath, length, 0.0); // update bounding box at every step
UPrlineto(userPath,0.0, 8*length);
UPrlineto(userPath, length,0.0);
UPrlineto(userPath,0.0,-8*length);
}
endUserPath(userPath, dps_ustroke); // specify the stroke type
sendUserPath(userPath); // send the path to server
return self;
}
- mouseDownAction:(NXPoint *)currentLocation
{
[self mouseDraggedAction:currentLocation]; //now do same as when dragging
return self;
}
- mouseDraggedAction:(NXPoint *)currentLocation
{
xOffset = sqRect.size.width/2; // set the offsets for movement wrt the center
yOffset = sqRect.size.height/2; // of drawing
sqRect.origin.x = currentLocation->x - xOffset; // new x and y locations are center
sqRect.origin.y = currentLocation->y - yOffset; // of drawing
[self display];
return self;
}
- free
{
freeUserPath(userPath);
return [super free];
}
@end